<?php

namespace App\Http\Controllers\Home;

use App\Models\ActivityCategorys;
use App\Models\Ads;
use App\Models\Areas;
use App\Models\Categorys;
use App\Models\CompanyInfos;
use App\Models\Configs;
use App\Models\Friends;
use App\Models\GoodsCategorys;
use App\Models\Helps;
use App\Models\Navbars;
use App\Models\Regions;
use App\Models\Users;
use App\Models\WordCategorys;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;


class PublicController extends Controller
{

    /**
     * 导航数据列表
     * @param Request $request
     * @return bool
     */
    public function navbars(Request $request)
    {
        try {
            $lists = Navbars::getList();
            foreach ($lists as $k => $v) {
                $lists[$k]['link'] = route($v['link']);
            }
            return $this->writeJson(0, $lists);
        } catch (\Exception $e) {
            return $this->writeJson(1, null, $e->getMessage());
        }
    }

    /**
     * 获取分类
     * @param url home.public.cates
     * @param Request $request
     * @param pid 一级分类id  0：默认显示所有一级和二级分类
     * @return bool
     */
    public function cates(Request $request)
    {
        try {
            $pid = (int) $request->get('pid', 0);
            if ($pid == 0) {
                $lists['one'] = Categorys::where('pid', '0')->get(['id', 'name', 'pid']);
                $lists['two'] = Categorys::where('pid', '<>', '0')->get(['id', 'name', 'pid']);
            } else {
                $lists = Categorys::getcates(['pid' => $pid], ['id', 'name', 'pid']);
            }
            return $this->writeJson(0, $lists);
        } catch (\Exception $e) {
            return $this->writeJson(1, null, $e->getMessage());
        }
    }

    /**
     * 获取分类
     * @param url home.public.category
     * @param Request $request
     * @param type 1活动 2商品 3文档 4平台分类
     * @return bool
     */
    public function category(Request $request)
    {
        try {
            $type = (int) $request->get('type'); //1活动 2商品 3文档 4平台分类
            if ($type == 1) {
                $lists = ActivityCategorys::getCascaderList();
            } elseif ($type == 2) {
                $lists = GoodsCategorys::getCascaderList();
            } elseif ($type == 3) {
                $lists = WordCategorys::getCascaderList();
            } elseif ($type == 4) {
                $lists = Categorys::getCascaderList();
            }
            return $this->writeJson(0, $lists);
        } catch (\Exception $e) {
            return $this->writeJson(1, null, $e->getMessage());
        }
    }

    /**
     * 友情链接
     * @param Request $request
     * @return bool
     */
    public function friends(Request $request)
    {
        try {
            $lists = Friends::where('status', 1)->where('status', '<>', -1)->get();
            return $this->writeJson(0, $lists);
        } catch (\Exception $e) {
            return $this->writeJson(1, null, $e->getMessage());
        }
    }

    /**
     * 帮助中心
     * @param Request $request
     * @param 类型id type 1新手指南 2平台细则
     * @return bool
     */
    public function helps(Request $request)
    {
        try {
            $type_id = (int) $request->get('type_id');
            if ($type_id == 1) { //获取新手指南
                $lists = Helps::where(array('status' => 1, 'type' => 1))->where('status', '<>', -1)->get();
            } else { //获取平台细则
                $lists = Helps::where(array('status' => 1, 'type' => 2))->where('status', '<>', -1)->get();
            }
            return $this->writeJson(0, $lists);
        } catch (\Exception $e) {
            return $this->writeJson(1, null, $e->getMessage());
        }
    }

    /**
     * 广告图
     * @param url home.public.advs
     * @param Request $request
     * @param limit 数量
     * @param 广告位id $adsense_id
     * 1:PC-首页banner广告位 2:PC-首页分类广告位 3:PC-首页中间广告位 4:PC-首页顶部广告位 5:PC-首页底部广告位 6:PC-首页供应商广告位 7:PC-新闻详情顶部广告位
     * 8:PC-新闻列表banner图广告位 9:PC-供应商首页banner图广告位 10:PC-供应商列表右侧上面广告位 11：PC-供应商列表右侧下面广告位 12：PC-供应商服务内容详情页右侧广告位
     * 13：PC-供应商案例详情页右侧广告位 14：PC-供应商列表banner图广告位 15：PC-活动分类banner图广告位 16：PC-活动列表banner图广告位 17:PC-活动分类/列表右侧广告位
     * 18:PC-HR发布活动右侧广告位 19:PC-商品分类banner图广告位 20:PC-商品列表banner图广告位 21:PC-商品分类/列表右侧广告位 22:PC-供应商发布商品右侧广告位
     * 23:PC-文档列表banner图广告位 24:PC-文档分类banner图广告位 25:PC-文档分类/列表右侧广告位 26:PC-需求列表banner图广告位 27:PC-需求列表右侧/发布需求右侧广告位
     * @return bool
     */
    public function advs(Request $request)
    {
        try {
            $params = [
                'adsense_id' => (int) $request->get('adsense_id'),
                'limit' => (int) $request->get('limit'),
                'status' => 1,
                //                'start_at' => date('Y-m-d H:i:s'),
                //                'end_at' => date('Y-m-d H:i:s'),
            ];
            $lists = Ads::getList($params, $fields = ['id', 'adsense_id', 'thumb', 'link'], $params['limit']);
            return $this->writeJson(0, $lists);
        } catch (\Exception $e) {
            return $this->writeJson(1, null, $e->getMessage());
        }
    }

    /**
     * 公司行业、类型、规模
     * @param url home.public.companys
     * @param Request $request
     * @param type 1公司类型、2公司行业、3公司规模、4HR部门人数
     * @return bool
     */
    public function companys(Request $request)
    {
        try {
            $params = [
                'type' => (int) $request->get('type'),
                'status' => 1,
            ];
            $lists = CompanyInfos::getList($params, $fields = ['id', 'name', 'type']);
            return $this->writeJson(0, $lists);
        } catch (\Exception $e) {
            return $this->writeJson(1, null, $e->getMessage());
        }
    }

    /**
     * 获取网站配置信息
     * @param url home.public.config
     * @param Request $request
     * @param site_name 网站名称
     * @param site_logo 网站logo
     * @param wap_logo 手机端网站logo
     * @param default_avatar 默认头像
     * @param copyright 版权信息
     * @param record_number 备案号
     * @param record_link 备案链接
     * @param public_record_number 公安备案号
     * @param public_record_link 公安备案链接
     * @return bool
     */
    public function config(Request $request)
    {
        try {
            $base = Configs::getConfig('base');
            return $this->writeJson(0, $base);
        } catch (\Exception $e) {
            return $this->writeJson(1, null, $e->getMessage());
        }
    }

    /**
     * 一线城市
     * @param url home.public.area
     * @param Request $request
     * @return bool
     */
    public function areas(Request $request)
    {
        try {
            $lists = Areas::get(['id', 'name', 'pid'])->toArray();

            return $this->writeJson(0, $lists);
        } catch (\Exception $e) {
            return $this->writeJson(1, null, $e->getMessage());
        }
    }

    /**
     * 所有地区
     * @param url home.public.regions
     * @param Request $request
     * @return bool
     */
    public function regions(Request $request)
    {
        try {
            $lists = Regions::getCascaderList();

            return $this->writeJson(0, $lists);
        } catch (\Exception $e) {
            return $this->writeJson(1, null, $e->getMessage());
        }
    }

    /**
     * 验证用户是否登录
     * @param url home.public.checkLogin
     * @param Request $request
     * @return bool
     */
    public function checkLogin(Request $request)
    {
        try {
            $user_id = auth()->guard('web')->id();//获取当前登录用户
            if (empty($user_id)) return $this->writeJson(1, null,'未登录');
            $userinfo = Users::where(['id'=>$user_id, 'status'=>1])->value('id');
            if (empty($userinfo)) return $this->writeJson(1,null,'用户不存在');

            return $this->writeJson(0, null,'登录中');
        } catch (\Exception $e) {
            return $this->writeJson(1, null, $e->getMessage());
        }
    }
}
